package com.example.travelplan.app;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;

import com.example.travelplan.app.dominio.Controller;
import com.example.travelplan.app.dominio.Dia;
import com.example.travelplan.app.dominio.Roteiro;
import com.example.travelplan.app.dominio.Atividade;
import com.example.travelplan.app.dominio.TipoLugar;
import com.example.travelplan.app.dominio.Lugar;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static android.app.AlertDialog.Builder;
import static android.view.View.OnClickListener;
import static android.widget.AdapterView.OnItemClickListener;
import static android.widget.Toast.LENGTH_LONG;
import static android.widget.Toast.makeText;


/**
 * Created by Rodrigo on 18/06/2014.
 */
public class janelaSalvarRoteiroActivity extends Activity {

    private ListView data_atividades;
    private int mIdRoteiroCorrente;
    MeuAdaptador_Dia listAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_janelasalvarroteiro);
        getActionBar().hide();

        int current = getRequestedOrientation();
        // only switch the orientation if not in portrait
        if ( current != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ) {
            setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
        }

//        adicionarAtividades(/*idCidade*/);
        getActionBar().hide();
        configurarAcoesBotoes();

        Bundle b = getIntent().getExtras();
        mIdRoteiroCorrente = b.getInt("idRoteiro");

        Roteiro roteiro = Controller.getInstance().obterRoteiro(mIdRoteiroCorrente);

        TextView  dataInicio = (TextView) findViewById(R.id.dt_inicio );
        dataInicio.setText(getTextoDataDia(roteiro.getM_dataIda()));

        TextView  dataFinal = (TextView) findViewById(R.id.dt_fim );
        dataFinal.setText(getTextoDataDia(roteiro.getM_datavolta()));

        TextView  txCidade = (TextView) findViewById(R.id.tx_cidade );
        txCidade.setText(roteiro.getM_cidade().getM_nome());

        listAdapter = new MeuAdaptador_Dia();

        data_atividades = (ListView) findViewById(R.id.listv_dias_atividades);
        data_atividades.setAdapter(listAdapter);

        // ListView Item Click Listener
        data_atividades.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {

                // ListView Clicked item index
                int itemPosition     = position;

                // ListView Clicked item value
                String  itemValue    = (String) data_atividades.getItemAtPosition(position);

                // Show Alert
                makeText(getApplicationContext(),
                        "Position :" + itemPosition + "  ListItem : " + itemValue, LENGTH_LONG)
                        .show();

            }

        });



    }

    /*public void adicionarAtividades(int idCidade)
    {
        data_atividades = (ListView) findViewById(R.id.listv_atividades);

        List<String> list = new ArrayList<String>();
        //Exemplos...apagar apos preenchimento
        //Como preencher o header?
        list.add("Praia            08:00");
        list.add("Montanha         11:00");
        list.add("Cachoeira        14:00");
        list.add("Volta            17:00");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1, list);
        data_atividades.setAdapter(dataAdapter);
    }
    */

    private void configurarAcoesBotoes()
    {
        Button bt_cancelar = (Button)findViewById(R.id.bt_cancelar);
        final Intent intentCancelar = new Intent(this, FullscreenActivity.class);
        Bundle b = new Bundle();
        b.putInt("idTab", 1);
        intentCancelar.putExtras(b);
        bt_cancelar.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                startActivity(intentCancelar);
            }
        });

//        Button bt_editar = (Button)findViewById(R.id.bt_editar);
//        final Intent intentEditarRoteiro = new Intent(this, janelaEditarRoteiroActivity.class);
//        bt_editar.setOnClickListener(new OnClickListener() {
//            public void onClick(View v) {
//                startActivity(intentEditarRoteiro);
//            }
//        });

        Button bt_salvar = (Button)findViewById(R.id.bt_salvar);
        final Builder dlgAlert  = new Builder(this);
        bt_salvar.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                dlgAlert.setMessage("Seu roterio foi salvo com sucesso!");
                dlgAlert.setTitle("Roteiro salvo!");
                dlgAlert.setPositiveButton("OK", null);
                dlgAlert.setCancelable(true);
                dlgAlert.show();

                dlgAlert.setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                //dlgAlert.dissmis();
                            }
                        });
            }
        });

        ImageButton bt_voltar = (ImageButton)findViewById(R.id.bt_voltar);
        bt_voltar.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                startActivity(intentCancelar);
            }
        });
    }

    public class MeuAdaptador_Dia extends BaseAdapter {

        List<Dia> diaList = obterListaDiasDoRoteiro();

        private List<Dia> obterListaDiasDoRoteiro() {
            Roteiro roteiro = Controller.getInstance().obterRoteiro(mIdRoteiroCorrente);

            return roteiro.getListaDias();
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return diaList.size();
        }

        @Override
        public Dia getItem(int arg0) {
            // TODO Auto-generated method stub
            return diaList.get(arg0);
        }

        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return arg0;
        }

        @Override
        public View getView(int arg0, View arg1, ViewGroup arg2) {

            if(arg1==null)
            {
                LayoutInflater inflater = (LayoutInflater) janelaSalvarRoteiroActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                arg1 = inflater.inflate(R.layout.listitem_roteiro, arg2,false);
            }

            TextView dataRoteiro = (TextView)arg1.findViewById(R.id.textViewDataRoteiro);
            TextView atividade1 = (TextView)arg1.findViewById(R.id.textViewAtividade1);
            TextView atividade2 = (TextView)arg1.findViewById(R.id.textViewAtividade2);
            TextView atividade3 = (TextView)arg1.findViewById(R.id.textViewAtividade3);

            Dia dia = diaList.get(arg0);
            String atividade;

            Atividade atv1 = dia.getListaAtividade().get(0);
            dataRoteiro.setText(getTextoDataDia(dia.getM_data()));

            atividade = getTextoDataDiaHora(atv1.getM_data()) + " " + Controller.getInstance().obterTipoLugar(atv1.getM_lugar().getTipoLugar()).getM_nome() + " - " + atv1.getM_lugar().getM_nome();
            atividade1.setText(atividade);

            Atividade atv2 = dia.getListaAtividade().get(1);
            atividade = getTextoDataDiaHora(atv2.getM_data()) + " " + Controller.getInstance().obterTipoLugar(atv2.getM_lugar().getTipoLugar()).getM_nome() + " - " + atv2.getM_lugar().getM_nome();
            atividade2.setText(atividade);

            Atividade atv3 = dia.getListaAtividade().get(2);
            atividade = getTextoDataDiaHora(atv3.getM_data()) + " " + Controller.getInstance().obterTipoLugar(atv3.getM_lugar().getTipoLugar()).getM_nome() + " - " + atv3.getM_lugar().getM_nome();
            atividade3.setText(atividade);

            return arg1;
        }

        public Dia getDia(int position)
        {
            return diaList.get(position);
        }

    }

    private String getTextoDataDiaHora(Date data){
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
        return sdf.format(data);
    }

    private String getTextoDataDia(Date data){
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        return sdf.format(data);
    }

}
